#ifndef STM32L052_LP_MODE_H_
#define STM32L052_LP_MODE_H_
#include "stm32l0xx_hal.h"
#include "stm32l0xx_nucleo.h"
/* Defines related to Clock configuration */    
/* Uncomment to enable the adaquate Clock Source */
#define RTC_CLOCK_SOURCE_LSI
/*#define RTC_CLOCK_SOURCE_LSE*/

#ifdef RTC_CLOCK_SOURCE_LSI
  #define RTC_ASYNCH_PREDIV    0x7F
  #define RTC_SYNCH_PREDIV     0x0130
#endif

#ifdef RTC_CLOCK_SOURCE_LSE
  #define RTC_ASYNCH_PREDIV  0x7F
  #define RTC_SYNCH_PREDIV   0x00FF
#endif

#define LOWER_POWER_INTERVAL    2000  //ms

void RTC_Config(void);
void app_standby_config(void);
void lp_set_wakeup_time(uint32_t time);
void lp_standby_mode(void);
void lp_sleep_mode(void);
void lp_stop_mode(void);
void Lp_Stop_mode_SystemPower_Config(void);
void SystemClockConfig_STOP(void);
void SystemPower_Config(void);
void SystemPower_Config_Lp_Sleep(void);
void Clock_Disable_Config(void);
uint32_t lp_get_rtc_time(void);

/*test*/
void RTC_AlarmConfig(void);
void RTC_TimeSet(uint32_t showtime);
/*time*/
uint32_t get_time(void);
void rtc_set_new_time(uint32_t time);
/*low power*/
void setup_heartbeat(void);
void power_manager(void);
#endif //STM32L052_LP_MODE_H_
